package com.xiaozhi.bean;

import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;


/**
 * 工厂Bean
 * 普通Bean
 * 区别
 * 1. Person = 普通Bean,注册组件的对象就是Persion对象,类型就是Persion
 * 2. 工厂bean = 实现了FactoryBean接口的组件,注册的不是HelloFactory,
 * 而是HelloFactory工厂调用了getObject返回的对象,并且类型是getObjectType指定的类型
 * Mybatis和Spring的整合用的这个SqlSessionFactoryBean
 */
// @Component// 也可以指定SmartFactoryBean 指定提前加载
public class HelloFactory implements FactoryBean<Hello> {

	@Override
	public Hello getObject() throws Exception {
		return new Hello();// 这是最终获取到的对象
	}

	@Override
	public Class<?> getObjectType() {
		return Hello.class;
	}
}
